import type { InjectionKey } from 'vue';
import { createContext, useContext } from '/@/hooks/core/useContext';


/**
 * cc这里已经: 
 * 定义了interface T
 * 生成了key
 * 通过key调用了生成的context
 * 
 * 在组件中直接如下使用:
 * ① createFormContext({定义T的对象实例 })
 * ② useFormContext()
 * 
 * 内容不多的时候不明显,如果内容很多的时候好处就比较明显了
 * 
 * 
*/
export interface FormContextProps {
    resetAction: () => Promise<void>;
    submitAction: () => Promise<void>;
}

const key: InjectionKey<FormContextProps> = Symbol();

export function createFormContext(context: FormContextProps) {
    return createContext<FormContextProps>(context, key);
}

export function useFormContext() {
    return useContext<FormContextProps>(key);
}


